#pragma once

namespace	MomogenkyouSystem	{

class PluginManager
{
protected:
	static	std::map<std::string,	PluginContainer>	g_Plugins;
public:
	static	void				Initialize();
	static	void				Shutdown();
	
	//	Loads a plugin with a given name, single instanced only
	static	void	*			LoadPlugin(const std::string & ExtensionName);
	//	Retreieve a plugin container with given name
	static	PluginContainer	*	GetPlugin(const	std::string & ExtensionName);
	//	Unload a plugin with a given name
	static	void				UnloadPlugin(const std::string & ExtensionName);
	//	Unload all plugins that are loaded
	static	void				UnloadAllPlugin();

	
};

}